31 de mayo de 2017

¿Qué es la estadística descriptiva?

Análisis exploratorio que describe un conjunto de datos para tener una idea

Algunas preguntas que intento responder sobre los datos:

  • ¿Qué valores toman?
  • ¿Están centrados en un valor?
  • ¿Son muy diferentes unos de otros?
  • ¿Cómo podemos describir cualquier patrón o tendencia?
  • ¿Son un único grupo? ¿Hay varios grupos de números?
  • ¿Difieren algunos pocos números notablemente del resto?

Ejemplo: encuesta sobre salud

source("http://www.openintro.org/stat/data/cdc.R")
head(cdc)
##     genhlth exerany hlthplan smoke100 height weight wtdesire age gender
## 1      good       0        1        0     70    175      175  77      m
## 2      good       0        1        1     64    125      115  33      f
## 3      good       1        1        1     60    105      105  49      f
## 4      good       1        1        0     66    132      124  42      f
## 5 very good       0        1        0     61    150      130  55      f
## 6 very good       1        1        0     64    114      114  55      f
dim(cdc)
## [1] 20000     9
nros.50 = sample(1:nrow(cdc), 50)
sub.cdc = cdc[nros.50, ]

Dataset cdc

names(sub.cdc)
## [1] "genhlth"  "exerany"  "hlthplan" "smoke100" "height"   "weight"  
## [7] "wtdesire" "age"      "gender"
sub.cdc$smoke100
##  [1] 1 1 1 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 1 1 0 0
## [36] 0 1 1 1 1 1 0 0 0 0 0 0 1 0 1
sub.cdc[,3]
##  [1] 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 0 1 0 0 1 1 1 1 0 1 0 1 1 1 1
## [36] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Funciones para cargar datos: read.table(), scan(), etc.

Dos grandes tipos de variables

Las clasifico en:

  • categóricas

  • numéricas

las voy a estudiar de distinta forma

Medidas resumen de variables

Medidas de centralidad

¿Cuál es el valor que representa la variable?

Media muestral: \(\frac{\sum_{i=1}^n x_i}{n}\)

mean(sub.cdc$height)
## [1] 66.72
altura.mod <- c(sub.cdc$height, 1800)
mean(altura.mod)
## [1] 100.7059

Muy sensible a errores o datos outliers

Otras medidas más robustas

Mediana muestral: ordeno todos los datos y devuelvo "el del medio"

median(altura.mod)
## [1] 66

Media \(\alpha-\)podada: elimino el \(\alpha\)% más pequeño y también el más grande, tomo media

mean(altura.mod, trim=0.10)
## [1] 66.7561

Medidas de dispersión

¿Cuán cercanos son los datos al valor típico?

varianza muestral: \(\frac{\sum_{i=1}^n (x_i-\overline{x})^2}{n-1}\)

var(sub.cdc$height)
## [1] 16.98122
sd(sub.cdc$height)
## [1] 4.120828

Otras medidas de dispersión más robustas

Cuartiles: como la mediana pero con 25% y 75%

Ordenamos la muestra y tomamos el lugar \(\alpha(n+1)\)

cuartil.inf <- quantile(sub.cdc$height, probs = 0.25)
cuartil.sup <- quantile(sub.cdc$height, probs = 0.75)

distancia intercuartil: cuartil superior - cuartil inferior

cuartil.sup-cuartil.inf
## 75% 
## 6.5

Otras medidas de dispersión más robustas

MAD: \(\text{mediana}(|X_i-\text{mediana}(X)|)\)

median(abs(sub.cdc$height-median(sub.cdc$height)))
## [1] 3

Ejemplo 1: Anscombe's quartet

Ejemplo 2: Data Dino

Gráficos :)

Variables categóricas

table(cdc$genhlth)
## 
## excellent very good      good      fair      poor 
##      4657      6972      5675      2019       677
pie(table(cdc$genhlth))

No están socialmente aceptados los gráficos de torta

barplot(table(cdc$genhlth))

Variables numéricas (continuas)

Histograma

hist(cdc$weight)

Histograma de algo normal

hist(rnorm(100,3,1))

Boxplot

boxplot(cdc$weight)

Boxplot

Boxplot de algo normal

set.seed(350)
boxplot(rnorm(100,3,1))

Comparando boxplots

altura.hombres = cdc[cdc$gender=="m","height"]
altura.mujeres = cdc[cdc$gender=="f","height"]
boxplot(altura.hombres, altura.mujeres)

Comparando boxplots

cdc$conformidad = cdc$weight-cdc$wtdesire
boxplot(cdc$conformidad ~ cdc$gender)

Comparando boxplots

cdc.elimino = cdc[cdc$conformidad>=-250,]
boxplot(cdc.elimino$conformidad ~ cdc.elimino$gender)

Mas boxplots

imc <- (cdc$weight / cdc$height^2) * 703
boxplot(imc ~ cdc$genhlth)

QQ-plot

qqnorm(cdc$weight)
qqline(cdc$weight)

QQ-plot de una normal

normal = rnorm(100,3,1) 
qqnorm(normal)
qqline(normal,col="red")

QQ-plot de una exponencial

exponencial = rexp(100,1/3) 
qqnorm(exponencial)
qqline(exponencial,col="red")

scatterplot

plot(cdc$height,cdc$weight)

otros tipos de graficos exploratorios

  • Heatmaps

  • Mapas para mezclar datos geográficos con variables continuas o discretas: ggmap

  • ggplot2: gráficos mucho más lindos

etc.

Ejercicios

  1. Hacer dos gráficos que describan el conjunto de datos marathon que consiste en los tiempos de llegada de los ganadores de la maratón de New York diferenciado según el sexo (boxplot y scaterplot). Estudiar la normalidad de las variables.

  2. Estudiar que relación hay entre las distintas variables del conjunto de datos ice cream y estudiar la normalidad de las variables.

Ejercicio 1

load("marathon.rda")
boxplot(marathon$Time ~ marathon$Gender, col=c("pink","blue")) # muy heteronormativo el color

Los tiempos de los hombres son mejores que los de las mujeres, en ambos casos hay bastantes outliers.

hombres=marathon[marathon$Gender=="m",]
mujeres=marathon[marathon$Gender=="f",]
plot(hombres$Year, hombres$Time, col="blue", ylim=c(2,3),xlab="Año",ylab="Tiempo de llegada")
points(mujeres$Year, mujeres$Time, col="pink")

Vemos para ambos sexos una tendencia decreciente en el tiempo de llegada

hist(marathon$Time)

qqnorm(marathon$Time)
qqline(marathon$Time, col="red")

No parece ser algo normal, no se ajusta a la recta. Asimétrica a derecha.

Ejercicio 2

helado <- read.table("icecream.txt",header = TRUE)
plot(helado$temp, helado$cons)

Tendencia creciente

boxplot(helado$temp)

Simetría, colas livianas

hist(helado$temp)

Simetría, colas livianas

qqnorm(helado$temp)
qqline(helado$temp,col="red")

Simetría, colas livianas